package com.bedrock.project.inside.service;

import com.bedrock.framework.web.domain.AjaxResult;
import com.bedrock.project.inside.entity.WorkHour;

import java.util.List;
import java.util.Map;

/**
 * 工时填报Service接口
 */
public interface WorkHourService {

    /**
     * 查询工时填报
     */
    public Map selectWorkHourById(Long workHourId);

    /**
     * 查询工时填报列表
     */
    public List<WorkHour> selectWorkHourList(WorkHour workHour);

    /**
     * 新增工时填报
     *
     * @param workHour 工时填报
     * @return 结果
     */
    public AjaxResult insertWorkHour(WorkHour workHour);

    /**
     * 修改工时填报
     *
     * @param workHour 工时填报
     * @return 结果
     */
    public int updateWorkHour(WorkHour workHour);

    /**
     * 批量删除工时填报
     *
     * @param workHourIds 需要删除的工时填报ID
     * @return 结果
     */
    public int deleteWorkHourByIds(Long[] workHourIds);

    /**
     * 删除工时填报信息
     *
     * @param workHourId 工时填报ID
     * @return 结果
     */
    public int deleteWorkHourById(Long workHourId);

    public List<Map> getProjectList();


    Map getHourDictData();

    /**
     * 工时周报列表
     */
    AjaxResult sendWeekReport();

    /**
     * 发送邮件
     */
    void sendMailWeekReport();

    /**
     * 发送邮件
     */
    void sendWeekReportWarn();

    /**
     * 检查项目和工时关联
     * @param projectId
     * @return
     */
    boolean checkWorkHourByProject(Long projectId);

    /**
     * 确认周报工时-销售
     * @param userId 销售员Id
     * @param confirmId  项目工时确认邮件Id
     * @return
     */
    String confirmWorkHour(Long userId,Long confirmId);

    /**
     * 批量新增工时填报
     * @param workHours 批量工时信息
     */
    public void insertBatchWorkHour(List<WorkHour> workHours);

    /**
     * 复制上周工时
     * @return 上周工时信息
     */
    public List<WorkHour> copyLstWeekWorkHour();
}
